import asyncio
from LLMModel import LangChainLLMModule
from chat_history import MultiUserConversationManager

# 初始化LangChain模块和多用户对话管理
llm_module = LangChainLLMModule()
user_id = "user002"

async def main():
    llm_module.conversation_manager.clear_memory(user_id)
    # 打印欢迎信息
    print("我是汽车推荐助手，请问有什么需要帮助？")
    print("您可以询问关于汽车推荐、价格、参数等相关问题")
    print("输入 'exit' 退出对话\n")

    # 对话循环
    while True:
        try:
            # 获取用户输入
            user_query = input("\n请输入你的问题: ").strip()

            # 检查是否退出
            if user_query.lower() == 'exit':
                print("感谢使用汽车推荐助手，再见！")
                break

            # 如果输入为空，提示用户重新输入
            if not user_query:
                print("请输入你的问题\n")
                continue

            async for token in llm_module.generate_stream_response(user_query, user_id):
                print(token, end="", flush=True)  # 实时打印输出

            # result = llm_module.generate_response(user_query,user_id)
            # print(result)

        except KeyboardInterrupt:
            print("\n\n检测到键盘中断，退出对话...")
            break
        except Exception as e:
            print(f"处理请求时发生错误: {e}")
            print("请重试或输入 'exit' 退出\n")


if __name__ == "__main__":
    # 使用 asyncio.run() 运行异步主函数
    asyncio.run(main())


